/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package starfox;

import util.Botao;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.Image;
import org.newdawn.slick.Input;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.state.BasicGameState;
import org.newdawn.slick.state.StateBasedGame;
import org.newdawn.slick.state.transition.FadeInTransition;
import org.newdawn.slick.state.transition.FadeOutTransition;

/**
 *
 * @author Lucas
 */
public class CreditsState extends BasicGameState {
    //Número do estado
    int stateID = 3;

    //Imagens
    Image background = null;
    Image creditos = null;
    Botao voltar = null;

    //Atributos para pegar a posição do mouse, botões do teclado etc
    Input input = null;
    int mouseX;
    int mouseY;

    //Variável para indicar se o mouse está sobre o botão de voltar
    boolean sobreVoltar = false;

    CreditsState( int stateID )
    {
       this.stateID = stateID;
    }

    @Override
    public int getID() {
        return stateID;
    }

    //Carregar as imagens
    @Override
    public void init(GameContainer arg0, StateBasedGame arg1) throws SlickException {
        background = new Image("imagens/Espaço.jpg");
        creditos = new Image("imagens/Creditos.png");

        //Criar um botão de voltar na posição (645, 547) a partir do arquivo "voltar.png"
        voltar = new Botao(645, 547, "imagens/voltar.png");
    }

    //Renderizar as imagens
    @Override
    public void render(GameContainer arg0, StateBasedGame arg1, Graphics arg2) throws SlickException {
        background.draw();
        creditos.draw();
        voltar.draw();
    }

    //Atualizar o estado
    @Override
    public void update(GameContainer gc, StateBasedGame sb, int delta) throws SlickException {
        //Pegar posição do mouse
        input = gc.getInput();
        mouseX = input.getMouseX();
        mouseY = input.getMouseY();

        sobreVoltar = false;

        //Verificar se o mouse está sobre o botão de voltar
        if( ( mouseX >= voltar.getX() && mouseX <= voltar.getX() + voltar.getImageWidth()) &&
            ( mouseY >= voltar.getY() && mouseY <= voltar.getY() + voltar.getImageHeight()) )
        {
            sobreVoltar = true;
        }

        if(sobreVoltar)
        {
            //Aumentar o tamanho do botão
            if(voltar.getScale() < 1.05f)
                voltar.changeScale(Botao.scaleStep*delta);

            //Se o jogador clicou no botão, voltar ao menu principal
            if(input.isMouseButtonDown(Input.MOUSE_LEFT_BUTTON)){
                sb.enterState(StarFox.MAINMENUSTATE, new FadeOutTransition(), new FadeInTransition());
                voltar.setScale(1);
            }
        }else{
            //Se o mouse não está sobre o botão, diminuir até o tamanho normal
            if(voltar.getScale() > 1.0f)
                voltar.changeScale(-Botao.scaleStep*delta);
        }
    }
}